/**
 * @param {number[][]} intervals
 * @return {number[][]}
 * 输入：intervals = [[1,3],[2,6],[8,10],[15,18]]
 * 输出：[[1,6],[8,10],[15,18]]
 * 解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]
 */
var merge = function (intervals) {
  let res = [];
  intervals.sort((a, b) => a[0] - b[0]); // 先按区间的开始处进行排序

  let prev = intervals[0];

  for (let i = 1; i < intervals.length; i++) {
    let cur = intervals[i];
    // 有重合
    if (prev[1] >= cur[0]) {
      prev[1] = Math.max(cur[1], prev[1]);
    } else {
      res.push(prev);
      prev = cur;  // 更新 prev
    }
  }
  // 最后一次赋值，也要 push 一下
  res.push(prev);

  return res;
};

console.log(merge([[1, 3], [2, 6], [8, 10], [15, 18]]))